# advanced_ops.py - 高级数学运算模块

import math

# 控制 import * 导入的内容
__all__ = ['power', 'sqrt', 'log']

def power(base, exponent):
    """幂运算
    Args:
        base (int/float): 底数
        exponent (int/float): 指数
    Returns:
        int/float: 底数的指数次幂
    """
    return base ** exponent

def sqrt(number):
    """平方根运算
    Args:
        number (int/float): 要开方的数
    Returns:
        float: 平方根
    Raises:
        ValueError: 当输入负数时抛出异常
    """
    if number < 0:
        raise ValueError("不能对负数开平方根")
    return math.sqrt(number)

def log(number, base=math.e):
    """对数运算
    Args:
        number (int/float): 真数
        base (int/float, optional): 底数，默认为自然常数e
    Returns:
        float: 对数值
    Raises:
        ValueError: 当输入非正数时抛出异常
    """
    if number <= 0:
        raise ValueError("真数必须为正数")
    if base <= 0 or base == 1:
        raise ValueError("底数必须为正数且不等于1")
    return math.log(number, base)

def _internal_function():
    """内部函数，仅供模块内部使用"""
    return "内部函数"

# 模块测试代码
if __name__ == "__main__":
    print("高级数学运算模块测试:")
    print(f"幂运算: 2^3 = {power(2, 3)}")
    print(f"平方根: sqrt(16) = {sqrt(16)}")
    print(f"自然对数: ln(e) = {log(math.e)}")
    print(f"以10为底的对数: log10(100) = {log(100, 10)}")